package cn.com.yusys.yusp.admin.web.rest;

import cn.com.yusys.yusp.admin.domain.AdminSmAuthInfo;
import cn.com.yusys.yusp.admin.service.AdminSmAuthInfoService;
import cn.com.yusys.yusp.commons.service.CommonService;
import cn.com.yusys.yusp.commons.web.rest.CommonResource;
import cn.com.yusys.yusp.commons.web.rest.dto.ResultDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

/**
 * @version 1.0.0
 * @项目名称: yusp-admin
 * @类名称: AdminSmAuthInfoResource
 * @类描述: 认证信息管理接口层
 * @功能描述:
 * @创建人: dusong@yusys.com.cn
 * @创建时间: 2017-12-19 13:42
 * @修改备注:
 * @修改记录: 修改时间    修改人员    修改原因
 * -------------------------------------------------------------
 * @Copyright (c) 2017宇信科技-版权所有
 */
@RestController
@RequestMapping("/api/adminsmauthinfo")
public class AdminSmAuthInfoResource extends CommonResource<AdminSmAuthInfo, String> {

    @Autowired
    private AdminSmAuthInfoService adminSmAuthInfoService;

    @Override
    protected CommonService getCommonService() {
        return this.adminSmAuthInfoService;
    }

    /**
     * @param
     * @函数名称:getAuthKeyValue
     * @函数描述:认证信息KV
     * @参数与返回说明:
     * @算法描述:
     */
    @GetMapping("/authkv")
    protected ResultDto<List<Map<String, String>>> getAuthKeyValue() {

        List<Map<String, String>> list = this.adminSmAuthInfoService.getAuthKeyValue();

        return new ResultDto<List<Map<String, String>>>(list.size(), list);
    }

    /**
     * 重写 CommonResource 中的 delete 方法。原因：正在被使用的认证类型不能被删除
     *
     * @param id-需要删除的认证类型的 ID
     * @return 删除结果
     */
    @Override
    public ResultDto<Integer> delete(@PathVariable("id") String id) {
        ResultDto<Integer> resultDto = new ResultDto<>();
        int result = this.adminSmAuthInfoService.delete(id);
        resultDto.setData(result);
        resultDto.setTotal(result);
        resultDto.setMessage("success");
        return resultDto;
    }
}
